/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.eurotrader.converters;

import br.com.eurotrader.interfaces.InterfaceEntidades;
import java.util.Map;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

/**
 *
 * @author Usuário
 */
public class SimpleEntityConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext ctx, UIComponent component, String value) {
        if (value != null) {
            return this.getAttributesFrom(component).get(value);
        }
        return null;
    }

    @Override
    public String getAsString(FacesContext ctx, UIComponent component, Object value) {

        if (value != null && !"".equals(value)) {
            InterfaceEntidades entity = (InterfaceEntidades) value;
            // adiciona item como atributo do componente
            this.addAttribute(component, entity);
            //  System.out.println(entity.getClass().getName());
            Integer codigo = entity.getId();
            //  System.out.println("codigo" + codigo);
            if (codigo != null) {
                return String.valueOf(codigo);
            }
            if (value instanceof String) {
                return (String) value;
            } else {
                return "";
            }
        }
        return "";

    }

    protected void addAttribute(UIComponent component, InterfaceEntidades o) {
        String key;
        if (o.getId() != null) {
            key = o.getId().toString(); // codigo da empresa como chave neste caso
        } else {
            key = "";
        }
        this.getAttributesFrom(component).put(key, o);

    }

    protected Map<String, Object> getAttributesFrom(UIComponent component) {
        return component.getAttributes();

    }
}

